package management.system.model.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import management.system.model.bean.DiscusionDTO;
import management.system.model.interfaces.DiscusionDAO;
import management.system.utils.MySqlDBConn;

public class MySqlDiscusionDAO implements DiscusionDAO{

	public Integer insertDiscusion(DiscusionDTO dto) throws SQLException {
		// TODO Auto-generated method stub
		String sql = null;
		Integer result = null;
		
		sql = "insert into Discusion(Perfil_ID, Discusion, puntuacion, Estado, Idea_ID, " +
			 " Fecha_Registro, Fecha_Modificacion, Usuario_ID) " +
			 " values(?, ?, ?, 'E', ?, now(), now(), ?)";
		
		System.out.println("sQL:"+sql);
		Connection conn = null;
		
		try {
			conn = getConnection();
			PreparedStatement pstm = conn.prepareStatement(sql);
			pstm.setInt(1, dto.getPerfilId());
			pstm.setString(2, dto.getDiscusion());
			pstm.setInt(3, dto.getPuntuacion());
			pstm.setInt(4, dto.getIdeaId());
			pstm.setInt(5, dto.getUsuarioId());
			
			result = pstm.executeUpdate();
		} catch (SQLException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return result;
	}

	public Connection getConnection(){
		MySqlDBConn mysql = new MySqlDBConn();
		return mysql.getConnection();
	}

	@Override
	public ArrayList<DiscusionDTO> listDiscusion(Integer codigo)
			throws SQLException {
		// TODO Auto-generated method stub
		String sql = null;
		ResultSet rs = null;
		ArrayList<DiscusionDTO> lstDiscusion = new ArrayList<DiscusionDTO>();
		
		DiscusionDTO dto = null;
		sql = "Select d.Discusion_ID, d.Discusion, d.puntuacion, d.Fecha_registro, " +
			  "concat(u.Nombres,' ', u.Apellido_Paterno,' ', u.Apellido_Materno) as Nombres " +
			  "From Discusion d, Usuario u Where d.Usuario_ID=u.Usuario_ID and d.Estado='E' and Idea_ID=?";
		
		System.out.println("sQL:"+sql);
		Connection conn = null;
		
		try {
			conn = getConnection();
			PreparedStatement pstm = conn.prepareStatement(sql);
			pstm.setInt(1, codigo);
			
			rs = pstm.executeQuery();
			while(rs.next()){
				dto = new DiscusionDTO();
				dto.setDiscusionId(rs.getInt("Discusion_ID"));
				dto.setDiscusion(rs.getString("Discusion"));
				dto.setPuntuacion(rs.getInt("puntuacion"));
				dto.setFechaRegistro(rs.getTimestamp("Fecha_Registro"));
				dto.setNombres(rs.getString("Nombres"));
				lstDiscusion.add(dto);
			}
		} catch (SQLException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return lstDiscusion;
	}
}
